package hackathon.techbooster.kuraudokakeibo;

import java.io.BufferedReader;
import java.io.ByteArrayOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;

import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Bitmap.CompressFormat;

public class Record {
	private int year;
	private int month;
	private int day;
	private String name;
	private String category;
	private int value;
	private String imgPath;

	public Record() {
		this.year = 2012;
		this.month = 5 + 1;
		this.day = 9;
		this.name = "商品名";
		this.category = "カテゴリ";
		this.value = 0;
		this.imgPath = "";
	}

	public Record(int year, int month, int day, String name, String category, int value, String imgPath) {
		this.year = year;
		this.month = month;
		this.day = day;
		this.name = name;
		this.category = category;
		this.value = value;
		this.imgPath = imgPath;
	}

	/**
	 * yearを取得します。
	 * @return year
	 */
	public int getYear() {
	    return year;
	}

	/**
	 * yearを設定します。
	 * @param year year
	 */
	public void setYear(int year) {
	    this.year = year;
	}

	/**
	 * monthを取得します。
	 * @return month
	 */
	public int getMonth() {
	    return month;
	}

	/**
	 * monthを設定します。
	 * @param month month
	 */
	public void setMonth(int month) {
	    this.month = month;
	}

	/**
	 * dayを取得します。
	 * @return day
	 */
	public int getDay() {
	    return day;
	}

	/**
	 * dayを設定します。
	 * @param day day
	 */
	public void setDay(int day) {
	    this.day = day;
	}

	/**
	 * nameを取得します。
	 * @return name
	 */
	public String getName() {
	    return name;
	}

	/**
	 * nameを設定します。
	 * @param name name
	 */
	public void setName(String name) {
	    this.name = name;
	}

	/**
	 * categoryを取得します。
	 * @return category
	 */
	public String getCategory() {
	    return category;
	}

	/**
	 * categoryを設定します。
	 * @param category category
	 */
	public void setCategory(String category) {
	    this.category = category;
	}

	/**
	 * valueを取得します。
	 * @return value
	 */
	public int getValue() {
	    return value;
	}

	/**
	 * valueを設定します。
	 * @param value value
	 */
	public void setValue(int value) {
	    this.value = value;
	}

	/**
	 * imgPathを取得します。
	 * @return imgPath
	 */
	public String getImgPath() {
	    return imgPath;
	}

	/**
	 * imgPathを設定します。
	 * @param imgPath imgPath
	 */
	public void setImgPath(String imgPath) {
	    this.imgPath = imgPath;
	}

	private String toSaveStr() {
		return 	year + "/" + month + "/" + day + "/" + name + "/" + category + "/" + value + "/" + imgPath;
	}

	public void saveImage(Context context, Bitmap bmp, String path) {
		try {
			ByteArrayOutputStream os = new ByteArrayOutputStream();
			bmp.compress(CompressFormat.JPEG, 100, os);
			FileOutputStream fileOutputStream = context.openFileOutput(path, Context.MODE_PRIVATE);
			fileOutputStream.write(os.toByteArray());
			fileOutputStream.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

	public void registRecord(Context context, String path) {
		try{
			OutputStream out = context.openFileOutput(path, Context.MODE_PRIVATE);
			PrintWriter writer = new PrintWriter(new OutputStreamWriter(out, "UTF-8"));
			writer.append(toSaveStr());
			writer.close();
		}catch(IOException e){
			e.printStackTrace();
		}
	}

	public void loadRecord(Context context, String path) {
		try{
			FileInputStream in = context.openFileInput(path);
			BufferedReader br = new BufferedReader(new InputStreamReader(in));
			String str = br.readLine();
			String[] data = str.split("/");

			year = Integer.parseInt(data[0]);
			month = Integer.parseInt(data[1]);
			day = Integer.parseInt(data[2]);
			name = data[3];
			category = data[4];
			value = Integer.parseInt(data[5]);
			imgPath = data[6];

			br.close();
		}catch(IOException e){
			e.printStackTrace();
		}
	}
}
